Data compression applications are used for various types of data including audio data, video data and executable content. Typically, data compression occurs at an encoder. The compressed data may be delivered to a decoder via a channel and decompressed into a replica (or sometimes an exact duplicate) of the source data.
Various data compression designs are available in the art. They typically reflect two competing interests. On one hand, it is desirable to eliminate all redundancies from a source data signal so that the compressed data signal occupies as little bandwidth as possible when it is placed in a channel. One the other hand, it becomes necessary to ensure that some amount of redundancy remains in the compressed data signal to make it possible to perform data decompression even in the face of data corruption that may be caused by channel imperfections.
Known xe2x80x9clayeredxe2x80x9d coders (or xe2x80x9chierarchicalxe2x80x9d or xe2x80x9cembeddedxe2x80x9d coders) attempt to harmonize these competing interests. A layered coder generates a compressed data signal that consists of two or more layers of coded data. These layers are often referred to as xe2x80x9cstreams.xe2x80x9d A first xe2x80x9cbasexe2x80x9d layer of coded data represents basic information about the source data signal. If decompression were performed solely upon the base layer, it would be possible to obtain an acceptable and usable representation of the source data signal. Layered coder typically provides additional information in one or more enhancement layers that, when decoded together with the base layer, refine the estimate that is obtained from the base layer. The enhancement layers typically do not completely represent the source data.
In a layered coder, the base layer is critical because a usable replica of the source signal cannot be obtained without it. Such coders are disadvantageous because it may not always be possible to ensure that the base layer is available at the decoder. Accordingly, there is a need in the art for a coding system that generates multiple streams with the property that a usable replica can be decoded from any single stream. Further, there is a need in the art for a coding system that generates such streams with sufficient data compression.
The present invention provides a balanced multiple descriptive coder, one that codes data in streams so that an acceptable replica of source data can be generated if either stream is lost.